import { initVueI18n } from '@dcloudio/uni-i18n';
import messages from './index';

const { t } = initVueI18n(messages as any);

/**
 * 使用 `useLocale` 钩子来获取翻译函数。
 *
 * @returns 包含翻译函数 `t` 的对象。
 *
 * @example
 * ```typescript
 * const { t } = useLocale();
 * const translatedText = t('hello'); // 简单翻译
 * const translatedTextWithParams = t('greeting', { name: 'John' }); // 带参数的翻译
 * const translatedTextWithArray = t('list', ['item1', 'item2']); // 带数组参数的翻译
 * ```
 *
 * @function
 * @name useLocale
 */
export function useLocale() {
  function translate(key: string, obj?: AnyObject) {
    if (!obj) {
      return t(key);
    }
    if (Array.isArray(obj)) {
      return obj.reduce((acc: string, cur: any, i: number) => {
        return acc.replace(`{${i}}`, cur);
      }, t(key));
    }
    return Object.entries(obj!).reduce((acc, [k, v]) => {
      return acc.replace(`@${k}`, v);
    }, t(key));
  }

  return { t: translate };
}
